# -*- coding: utf-8 -*-
from Tkinter import *
import tkMessageBox
import ModifyCodeRule
import os

def getEditCode(srcDir):
    if not os.path.exists(srcDir):
        return -1
    prt = ModifyCodeRule.AlphaReport(srcDir)
    if not prt.parseContent():
        return -2
    prt.output()
    return 0

class WinApp:
    def __init__(self, srcFile=None):
        self.root = Tk(className="プリンタコード編集ツール")
        font = ('ＭＳ ゴシック', 11, NORMAL)
        frame0 = Frame(self.root)
        frame0.pack(side=TOP)
        label0 = Label(frame0, text=u"プリンタファイル ：", font=font)
        label0.pack(side=LEFT)
        self.srcDir = Entry(frame0, font=font, width=40)
        self.srcDir.pack(side=LEFT)
        if srcFile:
            self.srcDir.insert(INSERT, srcFile)
        self.findSrcDir = Button(frame0, text=u"参照", command=self.findSrcFolder, font=font)
        self.findSrcDir.pack(side=LEFT)

        frame4 = Frame(self.root)
        frame4.pack(side=TOP)
        self.execute = Button(frame4, text=u"作成", command=self.start, font=font)
        self.execute.pack()
        self.root.mainloop()

    def findSrcFolder(self):
        import tkFileDialog
        dlg = tkFileDialog.Open()
        dlg.options['initialdir'] = os.path.abspath(self.srcDir.get())
        dlg.options['filetypes'] = [(u"PFFファイル", "*.pff")]
        filename = dlg.show()
        if filename:
            self.srcDir.delete(0, END)
            self.srcDir.insert(INSERT, os.path.abspath(filename))

    def start(self):
        srcDir = self.srcDir.get().strip()
        
        if len(srcDir) > 0:
            ret = getEditCode(srcDir)

            if ret == -1:
                tkMessageBox.showinfo("Alert", "プリンタファイルが存在しない。")
            elif ret == -2:
                tkMessageBox.showinfo("Alert", "プリンタファイルのフォマートがミスです。")
            elif ret == 0:
                tkMessageBox.showinfo("Info", "作成しました。")
        else:
            tkMessageBox.showinfo("Alert", "プリンタファイルが省略不可です。")

if __name__ == "__main__":
    if len(sys.argv) > 1:
        ret = getEditCode(sys.argv[1])
        if ret == -1:
            print "Alert: Print file isn't exists."
        elif ret == -2:
            print "Alert: File format isn't right."
        elif ret == 0:
            print "Success!"
    else:
        WinApp()
